﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Detai.Admin.Models;
using Detai.Admin.ViewModels;
using Detai.Admin.Components;
namespace Detai.Admin.Controllers
{
    public class LophocController : Controller
    {
        private bool isRoled = SystemConstants.Kiemtraquyen(1);
        DetaiDataContext eDataContext = new DetaiDataContext();

        [Authorize()]
        public ActionResult Index()
        {
            // Kiểm tra quyền
            if (!isRoled) { return RedirectToAction("Index", "Thongbao", new { message = SystemConstants.Khongcoquyen }); }

            LophocIndexViewModel model = new LophocIndexViewModel();
            model.Lops = eDataContext.Lops.ToList();
            return View(model);
        }

        [Authorize()]
        public ActionResult Create()
        {
            // Kiểm tra quyền
            if (!isRoled) { return RedirectToAction("Index", "Thongbao", new { message = SystemConstants.Khongcoquyen }); }

            return View();
        }


        [HttpPost]
        [Authorize()]
        public ActionResult Create(Lop formData)
        {
            try
            {
                UpdateModel(formData);
                eDataContext.Lops.InsertOnSubmit(formData);
                eDataContext.SubmitChanges();
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        [Authorize()]
        public ActionResult Edit(int id)
        {
            var model = eDataContext.Lops.FirstOrDefault(e => e.Malop == id);
            return View(model);
        }


        [HttpPost]
        [Authorize()]
        public ActionResult Edit(int id, Lop formData)
        {
            try
            {
                formData = eDataContext.Lops.FirstOrDefault(e => e.Malop ==id);
                UpdateModel(formData); 
                eDataContext.SubmitChanges();
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        [Authorize()]
        public ActionResult Delete(int id)
        {
            var item = eDataContext.Lops.FirstOrDefault(e => e.Malop == id);
            return View(item);
        }


        [HttpPost]
        [Authorize()]
        public ActionResult Delete(int id, Lop fromdata)
        {
            try
            {
                var itemlop = eDataContext.Lops.FirstOrDefault(e => e.Malop == id);
                if (itemlop != null)
                {
                    //Xóa tất cả các thông tin liên quan
                    // Xóa các bài tập đc giao cho lớp
                  //  var lophoc_baitap = eDataContext.Lophoc_BTs.Where(e => e.Malop == id).ToList();
                  //  if (lophoc_baitap.Count() > 0) eDataContext.Lophoc_BTs.DeleteAllOnSubmit(lophoc_baitap);
                    // Xóa các sinh viên trong lớp
                   // var listsinhvien = eDataContext.Sinhviens.Where(e => e.Malop == id).ToList();
                    // Với mỗi sinh viên, xóa bài giải và tài khoản của sv
                    //foreach (var item in listsinhvien)
                    //{
                    //    var baigiais = eDataContext.Baigiais.Where(e => e.MaSV == item.MaSV).ToList();
                        //xóa bai giai của sinh vien
                    //    if (baigiais.Count() > 0) eDataContext.Baigiais.DeleteAllOnSubmit(baigiais);
                        //Xóa tai khoản của sinh viên
                    //    var taikhoan = eDataContext.TaiKhoans.Where(e => e.MaTK == item.MaTK).FirstOrDefault();
                    //    if (taikhoan != null) eDataContext.TaiKhoans.DeleteOnSubmit(taikhoan);
                    //}
                    //if (listsinhvien.Count() > 0) eDataContext.Sinhviens.DeleteAllOnSubmit(listsinhvien);
                    
                    //..
                   eDataContext.Lops.DeleteOnSubmit(itemlop);
                   eDataContext.SubmitChanges();
                }
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

    }
}
